package com.atguigu.state;

/**
 * Dispense（发放奖品的状态）
 * 
 * <pre>
 * State noRafflleState  不能抽奖状态
 * State canRaffleState  可以抽奖的状态
 * State dispenseState   发放奖品的状态
 * State dispensOutState  奖品发放完毕状态，请下次再参加
 * </pre>
 */
public class StateForDispense extends State {

	// 初始化时传入活动引用，发放奖品后改变其状态
	RaffleActivity activity;

	public StateForDispense(RaffleActivity activity) {
		this.activity = activity;
	}

	//

	@Override
	public void deductScore() {
		System.out.println("不能扣除积分");
	}

	@Override
	public boolean raffle() {
		System.out.println("不能抽奖");
		return false;
	}

	// 发放奖品
	@Override
	public void dispensePrize() {
		if (activity.getCount() > 0) {
			System.out.println("恭喜中奖了");
			
			// 改变状态为不能抽奖，重置抽奖程序
			activity.setState(activity.getNoRafflleState());
		} else {
			
			System.out.println("很遗憾，奖品发送完了");
			
			/**
			 * 因为奖品数量为0，因此将活动状态改为，请下次再参加。
			 */
			// 后面我们就不可以抽奖
			activity.setState(activity.getDispensOutState());
			// System.out.println("抽奖活动结束");
			// System.exit(0);
		}

	}
}
